1. Field of the Invention
The present invention pertains generally to stimulation of hydrocarbon production. The present invention is a method for altering the wettability of reservoir rock and reducing the interfacial tension between water and hydrocarbon in a more efficient manner than prior art methods. Most particularly, the method of the invention achieves that efficiency by optimizing the amount of surfactant required for successful well treatments by utilizing fuzzy logic and neural networks.
2. Prior Art
This invention pertains to increasing the underground reservoir production rate of hydrocarbons in the state of fluids or gas by altering the wettability of the hydrocarbon bearing rock surface. Underground reservoirs inherently consist of porous and permeable rocks that contain oil, gas and water (and other minerals and contaminants not dealt with here for simplicity but well-known in the art). Upon discovery of a well, the pressure in the porous rock matrix typically exceeds that in the borehole or fractures connecting the matrix to the borehole, and gas and/or fluids can be withdrawn from the reservoir. A helpful example of the underground system is shown in U.S. Pat. No. 2,792,894 to Graham et al. As the pressure between the matrix and the borehole equilibrates, the importance of the wettability of the matrix surface increases.
This importance of wettability is demonstrated in the difference in the capillary pressure for water wet and oil wet surfaces. As shown theoretically in FIG. 1, at a 20% water saturation, the difference between the capillary pressure of oil wet and water wet surfaces is greater than 100 psi. This is particularly significant when the reservoir pressure is low. (Capillary pressure is a force that governs the distribution of oil, gas, and water throughout the reservoir and its importance is described in detail in the 1970 patent to Stone et al., U.S. Pat. No. 3,498,378, and is well-known in the art.) Thus, as shown in FIG. 1, changing the wettability of the surface will result in promotion of countercurrent imbibition, thereby generating the water wet curve. In countercurrent imbibition, water is imbibed into the rock dispelling oil in a “countercurrent” expulsion, allowing the oil to be recovered at the wellbore through a fracture. This process can be further improved by use of surface active agents (i.e., surfactants) which reduce interfacial surface tension between the oil and water phase and alter the contact angle of the fluid that wets the rock surface.
The demonstrative capillary pressure curves of FIG. 1 were generated by altering only the contact angle, θ, in the capillary pressure equation wherein capillary pressure,
      P    c    =            2      ⁢                          ⁢      σ      ⁢                          ⁢      cos      ⁢                          ⁢      θ        r  
wherein                θ is the contact angle,        σ is the interfacial tension,        and r is the radius of a tube or bundle of tubes (described by the ratio of the square root permeability to porosity of porous rock).Contact angles are generally defined in FIG. 2 for a gas-liquid-solid capillary tube system. When the contact angle is less than 90° the tube surface is water wet; when the contact angle is equal to 90° the surface displays intermediate wettability; and when the contact angle is greater than 90° the surface is oil wet.        
The system shown in FIG. 3 is water-oil-solid. When the contact angle measured through water of the oil drop is less than 90° the surface is water wet and when the contact angle is greater than 90° the surface is oil wet.
The effect of altering the wettability of an oil wet system with various chemicals is discussed in U.S. Pat. No. 2,792,894 to Graham et al., and is well-known in the art. Graham et al. described non-ionic, anionic, and cationic surfactants. U.S. Pat. No. 4,842,065 to McClure also describes surfactant use, but improves on the '894 patent by describing a laboratory procedure that is somewhat different than the laboratory procedure described in the earlier patent. The '065 patent also specifically requires that injection wells be used to employ the process. Therefore, it is well-known in the art that surfactants may be employed to increase wettability of the rock surface to recover additional oil. However, it is also known in the art that different surfactants and surfactant amounts produce differing results that vary from formation-to-formation, field-to-field, and sometimes well to well.
This was shown when D. C. Standnes and T. Austad presented a laboratory method to evaluate the effect of surfactants on oil recovery via spontaneous imbibition. Standnes, D. C. and Austad, T.: “Wettability Alteration in Low-Permeability Chalk. Mechanism for Wettability Alteration from Oil-Wet to Water-Wet Using Surfactants,” 6th International Symposium on Reservoir Wettability and its Effect on Oil Recovery, Socorro, N. Mex., 27-28 Sep. 2000. Our FIG. 4 generally depicts this method, showing an imbibition cell wherein a reservoir core saturated with reservoir oil is placed in reservoir water within the cell. The system is then allowed to equilibrate at reservoir temperature. Depending on the wettability of the core surface, the water in the imbibition cell may imbibe into the core and displace oil. The amount of oil recovered is then measured in the graduated cylinder of the imbibition cell. Once water imbibition stabilizes, surfactant is added to the system to alter the wettability and produce additional oil for recovery. A successful surfactant experiment (oil recovery versus time) is shown in FIG. 5. The “recovery vs. time” curves shown reach a plateau (equilibration of the system) until a solution of 500 ppm of a cationic surfactant replaces the reservoir water (increasing wettability) and oil recovery resumes. Conversely, FIG. 6 shows the results of a non-productive surfactant addition oil recovery experiment. This demonstrates that laboratory tests are useful for selecting surfactants for field applications, given the variability of reservoir fluid systems. Similar imbibition results for a gas-water-core system are shown in FIG. 7, which can be viewed in the context of FIG. 2. The core titled “untreated” (water-wet) imbibed much more water than the cores that were made less water wet as they were “treated” with surfactant.
However, up-scaling the laboratory results to field applications currently remains difficult because of the large number of variables involved in field tests. Laboratory experiments are conducted under controlled conditions where the variables such as (but not limited to) volume, core porosity, permeability, surface area, and saturations are precisely measured. Because some field test variables are based only or partially on indirect measurements obtained from logs, these variables are usually not precise. Instead, they are “fuzzy”. As a result of these imprecise variables, the present invention, as disclosed herein, is particularly useful in its use of artificial intelligence, comprising application of fuzzy logic and use of neural networks, to analyze such data.
Fuzzy logic, used as a ranking tool for neural network inputs, is a powerful new analytical tool. Fuzzy logic was first applied to core dataset, by Chawathe, Ouenes, Ali, and Weiss (named inventor herein), and later defined as a ranking tool for neural network inputs by them, as informationally depicted here in FIGS. 8, 9 & 10, and explained herein. Chawathe, A., Ouenes, A., Ali, M., and Weiss, W. W.: “One Core, Few Modern Logs, and Limited Production Data: Is Reliable Reservoir Characterization Possible?” SPE Paper 38260, 67th Annual SPE Western Regional Meeting, Long Beach Calif., 25-27 Jun. 1997.
In understanding the principles for application of fuzzy logic consider a dataset consisting of two variables x and y, where y is the random value of x or yi=random (xi) (by definition the dataset is 100% noise). For each data (xi, yi), a “fuzzy membership function” is defined using the following relationship:
Fuzzy Membership Function,
                    F        i            ⁡              (        x        )              =                  exp        ⁡                  (                      -                                          (                                                                            x                      i                                        -                    x                                    b                                )                            2                                )                    ·              y        i              ,
Wherein:                x=input variable        i=1, 2, 3 . . . N        N=Total number of input pairs        yi=random (xi) or desired output variable; and        
  b  =            (                        x          max                -                  x          min                    )              i      A fuzzy membership function was generated for each of the 100 random data points as shown in FIG. 8. The two bell shaped curves shown in the crossplot of a distribution curve of 100 random data points are shown in FIG. 8 and were generated with a fuzzy membership function.
As shown in FIG. 9, the same fuzzy membership function is applied to a 100 point dataset with an x0.5 trend added. The fuzzy membership value is calculated for each output variable y using all the available input data. These values are iteratively summed to obtain the fuzzified values of the input dataset with respect to each of the desired output y. These values are then defuzzified to generate the fuzzy curve as depicted in FIG. 10, by using the fuzzy curve function,
      FC    ⁡          (      x      )        =                    ∑                  i          =          1                N            ⁢                        F          i                ⁡                  (          x          )                                    ∑                  i          =          1                N            ⁢                                    F            i                    ⁡                      (            x            )                          /                  y          i                    
Wherein:                Fi(x) is the fuzzy membership function for each input x;        i=1, 2, . . . N        N=Total number of input pairs        yi=random (xi).The final curve can be interpreted for the utility of given inputs for linear or non-linear regressions.        
The fuzzy curve generated with the 100% noisy (random) dataset as shown in FIG. 10 exhibits no correlation between x and y and therefore would not be considered as a reliable neural network input variable. The fuzzy curve generated with the noisy dataset that included a square root of x trend, FIG. 10, showed that as x increases, so did the fuzzyfied y value. Hence, fuzzy logic can differentiate between datasets that exhibit a relationship between variables from those that have no relationship. The difference between the maximum and minimum values of the fuzzyfied variable y, also called the “range,” is an indicator of the strength of the relationship between the two variables. The “goodness” of the fuzzy curve can be estimated by adding the value of “least square fit” correlation coefficient to the value of the fuzzy curve range. The sum of the range and the correlation coefficient of the straight line is called “goodness” For example in the FIG. 10 the range of the fuzzy curve with the added trend is 0.9 and the correlation coefficient of the best fit line to the fuzzy curve data points is about 0.9 and the “goodness” is 1.8. Conversely, the fuzzy curve generated with random data has a range of about 0.2 and least square fit line correlation coefficient of about 0.9 or the goodness is 1.1—much less than the trend data. Hence fuzzy curves can differentiate between random data and correlatable data.
Returning to the non-theoretical, typically datasets for field experiments are complex, especially field experiments containing many variables. Further complicating the experiment is the problem that some of the variables may have no bearing on the measured result. In fact, seldom is a correlation between the result and any one variable satisfactory. As a result, it is necessary to determine what variables are correlated to the desired result and how much weight to give to each particular variable. Based on the deviation of the variable on the fuzzy curve from a flat curve, each attribute is assigned a rank, which allows a direct estimation of which attributes would contribute the most to a particular regression. The ranking value is used to prioritize neural network input variables as described further herein.
Neural networks are particularly well-suited for correlating multiple variables with experimental results. This makes them particularly useful for the multiple variables potentially associated with field experiments. However, care must be exercised to avoid neural net inputs (experimental variables) that do not influence the neural network output (result) in the design of the neural network architecture (also known as topology), as noted by Ouenes, Richardson, and Weiss. Ouenes, A., Richardson, S., Weiss, W. W.: “Fractured reservoir Characterization and Performance Forecasting Using Geomechanics and Artificial Intelligence,” SPE Paper 30572, SPE Annual Technical Conference and Exhibition held in Dallas Tex., 22-25 Oct. 1995.
A brief explanation of neural network terminology, operation, and design may be helpful. Artificial neural networks are systems loosely modeled on the human brain. They are an attempt to simulate within hardware and/or software, the multiple layers of simple processing elements called neurons. Each neuron is linked to all of its neighbors with varying coefficients of connectivity (weights) representing the strengths of each of the connections in the forward direction. Adjusting strengths to cause the overall network to output appropriate results accomplishes “learning” or “training” of the system. In equations, various “inputs” to the network are typically represented by the mathematical symbol, x(n). Each of these inputs are multiplied by a “connection weight” or “weight”, these weights are represented by w(n). In the simplest neural network architecture, these products are simply summed, fed through a transfer function to generate a result, and then output is determined. In neural network design, the designer typically utilizes trial and error in the design decisions.
The design issues in neural networks are complex, so it is understood for the purposes of this disclosure that someone familiar with the art would also be familiar with neural network design. Designing a neural network comprises: arranging neurons in various layers, deciding the type of connections among neurons for different layers, as well as among the neurons within a layer, deciding the way a neuron receives input and produces output, and determining the strength of connection within the network by allowing the network to learn the appropriate values of connection weights by using a training data set.
Artificial neural networks are the simple clustering of the primitive artificial neurons (which are not capable of the interconnections of natural neurons). Instead, simple clustering is utilized by creating interconnected layers. Basically, all artificial neural networks have a similar structure of topology. Some of the neurons (input layer) interface outside of the neural network to receive inputs while other neurons (output layer) provide the network's outputs. All other network neurons are “hidden” from view (hidden layer). When the input layer receives input, its neurons produce output, which then, in turn, becomes input to the other layers of the system. The process continues until a certain condition is satisfied or until the output layer is invoked. An important problem in neural network design is determining the number of hidden neurons best used in the network. If the hidden number of neurons is increased too much, overtraining will result in the network being unable to “generalize”. The training set of data will be memorized, making the network effectively useless on new data sets. Daniel Klerfors, “Artificial Neural Networks”, Saint Louis University website, <http://hem.hj.se>, 1998.
Neural network architecture defines the number of input nodes, the number of hidden layers, the number of nodes in a hidden layer, and the number of nodes in the output layer. For example, a 3-3-1 neural network contains an input layer with 3 nodes (one for each variable), a hidden layer with 3 nodes and an output layer with a single node. The complexity of the architecture is limited by the size of the available dataset hence the architecture would depend on the depend on the dataset being used. Typically feedforward-backpropagation neural networks are preferred with the architecture defined by the number of output values available. Generally the number of output values should exceed the number of weights (sum of all tie lines between nodes in adjacent layers) by a factor of two. The number of output values would generally not be large in oilfield datasets, not exceeding a few hundred and frequently less than 30. If the number of output values is 50 the desired number of weights is less that 25 or if there are three input nodes and one output node the architecture could consist of one hidden layer of six nodes for a total of 24 weights. Occasionally two hidden layers provide better training results, in which case the number of nodes should be limited to three per hidden layer, for a total of 21 weights.
The input variables for neural network applications described herein typically are production values such as barrels of oil, water, or gas. Key input values are controlled changes in the well conditions—such as the amount and volume of chemicals used to stimulate the well. Petrophysical variables are also used (and those measured by electronic logs are particularly useful). These variables consist of gamma ray, neutron, density, resistivity, and other measurements obtained from electronic log across the producing formation. The output values are the result of changing controlled well conditions. The results are generally expressed as the change in the oil, gas, and water producing rates either as absolute values or percentages of the change.
Seismic refelection information such as amplitude and frequency and their derivatives frequently serve as input variables when applying neural networks to exploration problems. Output variables are parameters that characterize the formation such as porosity, saturations, and lithology.
Neural networks are used to solve inverse problems where the answer is known (the outputs). No single variable correlates with the answer in a satisfactory manner, but multiple variables enhance the correlation. Neural networks solve these inverse problems by generating the appropriate constants (weights). A generalized matrix solution for one iteration through a neural network between any two layers in the network is given by the following equation:Out1=Act*[W*In]
Wherein:
      W    =                  [                                                            W                11                                                                    W                12                                                                    W                                  1                  ⁢                  i                                                                                                        W                21                                                                    W                22                                                                    W                                  2                  ⁢                  i                                                                                                        W                k1                                                                    W                k2                                                                    W                ki                                                    ]            ⁢                                        ⁢                                      ⁢      is      ⁢                          ⁢      the      ⁢                          ⁢      weight      ⁢                                        ⁢                                      ⁢      matrix            In    =                  [                                                            In                1                                                                                        In                2                                                                                        In                i                                                    ]            ⁢                                        ⁢                                      ⁢      is      ⁢                          ⁢      the      ⁢                                        ⁢                                      ⁢      matrix      ⁢                          ⁢      of      ⁢                          ⁢      the      ⁢                          ⁢      input      ⁢                                        ⁢                                      ⁢      variables            Out1    =                  [                                                            Out1                1                                                                                        Out1                2                                                                                        Out1                k                                                    ]            ⁢                                        ⁢                                      ⁢      is      ⁢                          ⁢      the      ⁢                                        ⁢                                      ⁢      output      ⁢                          ⁢      matrix      ⁢                          ⁢      at      ⁢                          ⁢      each      ⁢                                        ⁢                                      ⁢      layer            Act    =                  [                                                            f                11                                                    0                                      0                                                          0                                                      f                22                                                    0                                                          0                                      0                                                      f                ki                                                    ]            ⁢                                        ⁢                                      ⁢      is      ⁢                          ⁢      a      ⁢                          ⁢      nonlinear      ⁢                          ⁢      diagonal      ⁢                          ⁢      activation            function    ⁢                  ⁢    matrix                  i=Total number of inputs to a given layer        k=Total number of nodes in a given hidden/output layer        Wki=is the weight that connects the output of the ith input node to the input of the kth hidden nodeApplying this matrix multiplication to a simple 2-2-1 neural network the following regression equation is obtained:Out1=f(v1*f(w1*in1+w3*in2)+v2*f(w2*in1+w4*in2))        
Wherein                in1, in2=input variables;        Out1=the output/result;        wi, vi=constants for weighting input variables for each layer        i=1, 2, . . . N        N=Total number of weights connecting any two layersin1 and in2 are two variables (inputs) that are believed to strongly influence the result termed Out1 (“output” in neural net parlance). For example, feedforward backpropagation neural networks (as known in the art) solve the regression equation by changing the weights, wi, and solving the equation until the output approximates the experimental result. Once a suitable equation is generated, the neural network can be used to forecast a result given a set of the input variables by simply feeding the inputs through the equation.        
It is very important that the variables selected as neural network inputs bear a relationship to the output in order to avoid a problem known in the art as “overtraining”. Training neural networks is a notoriously difficult problem. It is analogous to the concept of curve fitting for rule-based systems. A good explanation of overtraining as described by Weiss, W. W et al: “Integrating Core Porosity and Sw Measurements with Log Values,” SPE Paper 55642, SPE Rocky Mountain Regional Meeting; Gillette, Wyo., 15-18 May 1999, is shown in our FIG. 11 where the overtrained curve can produce negative values of porosity which are meaningless. Overtraining occurs when a network has learned not only the basic patterns associated with input and output data, but also the subtle nuances and even the noise specific to the training set. If too much training occurs, the network may only memorize the training set and lose its ability to generalize new data. This results in a network that performs well on the training set, but poorly on out-of-sample testing data. Poor predictions can result from an overtrained neural network as discussed in Du, Y., Weiss, W. W., Xu, J., Balch, R. S., and Li, D.: “Obtain an Optimum Artificial Neural Network Model for Reservoir Studies,” SPE Paper 84445, SPE Annual Technical Conference and Exhibition; Denver, Colo., 5-8 Oct. 2003. Du's work was based on well controlled synthetic datasets with noise added. He evaluated six different functions as synthetic datasets of x to describe y. One example used a value of x as the input and the output, y, where y=(x2+1)+random x. It was found that 1-34-1 neural network (19 weights) trained to about 100% using 12 to 480 values of y (training records). Ten percent of the values of y (outputs) were parsed for testing purposes. He found that the trained 1-3-4-1 neural network predicted correct values for the parsed values about 100% of the time until the number of training records fell below 32 (a 1.7 records to weights ratio). When the number of training records was decreased to 24 the testing correlation coefficient fell to 72%. This exercise was repeated with 6 different functions including sin(x), sin(x)*cos(x)/2, and three Fourier functions serving as values of y (outputs). In all cases exceeding the weights to records ratio of 2.0 resulted in poor testing performance, identified as “overtraining.”
U.S. Pat. No. 6,002,985 to Stephenson discloses a neural network methodology to develop oilfields including well stimulation. FIG. 2 in the '985 patent was generated with data in their Example 1 and shows a very good correlation between predicted production and actual production. The neural network architecture is not disclosed, but 10 input variables were trained with 32 records to generate the cited figure. The 10 input variables were selected manually or with a genetic algorithm. The minimum possible records to weights ratio is a satisfactory 2.9 with a 10-1-1 architecture. If the architecture is 10-2-1 then the ratio is 1.5—resulting in an overtrained solution.
Neither the laboratory wettability altering technique (disclosed in the '894 patent and the '065 patent) nor the artificial intelligence analyses technique (disclosed in the '985 patent) solves the problem of designing field applications of reservoir wettability altering chemicals. Therefore, there is a great need in the art for a method that can effectively utilize this powerful artificial intelligence tool to determine appropriate use of wettability agents.